home *** CD-ROM | disk | FTP | other *** search
/ Palm Utilities / Palm_Utilities_CD-ROM_2001_2001.iso / files / utils misc / Boxer 0.18 / Boxer018.exe / boxer / HiBrowz / browz.c next >
Encoding:
C/C++ Source or Header  |  2000-06-29  |  4.2 KB  |  215 lines

  1. #define IGNORE_STDIO_STUBS
  2. #define __string_h
  3.  
  4. #include <PalmOS.h>
  5. #include <PalmCompatibility.h>
  6. #include <Unix/sys_types.h>
  7. #include <INetMgr.h>
  8. #include <CTP.h>
  9.  
  10. #include "stringil.h"
  11. #include "stdio2.h"
  12.  
  13. int GetURL(char *host)
  14. {
  15.   FILE *fd;
  16.   UInt16 INRef, CfIn;
  17.  
  18.   VoidHand inh, sock;
  19.   Err err;
  20.   unsigned long len, lact;
  21.   UInt32 set;
  22.   char *buf, *fnp;
  23.  
  24.   /* bypass until URL */
  25.   while (*host && strncmp(host, "http://", 7))
  26.     host++;
  27.  
  28.   if (!*host)
  29.     return 2;
  30.  
  31.   err = SysLibFind("INet.lib", &INRef);
  32.  
  33.   INetLibConfigIndexFromName(INRef, inetCfgNameCTPDefault, &CfIn);
  34.  
  35.   err = INetLibOpen(INRef, CfIn, 0, 0, 0, &inh);
  36.   set = 64000;
  37.   err |= INetLibSettingSet(INRef, inh, inetSettingMaxRspSize, &set, 4);
  38.   set = ctpConvNone;
  39.   err |= INetLibSettingSet(INRef, inh, inetSettingConvAlgorithm, &set, 4);
  40.   err |= INetLibURLOpen(INRef, inh, host, NULL, &sock, 2000, 0);
  41.  
  42.   if (err) {
  43.     INetLibClose(INRef, inh);
  44.     return 1;
  45.   }
  46.  
  47.   WinDrawChars("Open      ", 10, 0, 112);
  48.  
  49.   fnp = host;
  50.   if (strlen(host) > 30)
  51.     fnp += strlen(host) - 30;
  52.  
  53.   fd = FileOpen(0, fnp, 'DATA', 'BRWS', fileModeReadWrite, NULL);
  54.  
  55.   len = 0;
  56.   buf = MemPtrNew(2050);
  57.   for (;;) {
  58.  
  59.     WinDrawChars("get     ", 8, 0, 112);
  60.  
  61.     err = INetLibSockRead(INRef, sock, buf, 2048, &lact, 3000);
  62.  
  63.     if (!lact)
  64.       break;
  65.  
  66.     if (err) {
  67.       StrIToH(buf, err);
  68.       strcat(buf, "    ");
  69.       WinDrawChars(buf, strlen(buf), 0, 100);
  70.       SysTaskDelay(200);
  71.       break;
  72.     }
  73.  
  74.     len += lact;
  75.  
  76.     WinDrawChars("More      ", 10, 0, 112);
  77.     if (lact != fwrite(buf, 1, lact, fd)) {
  78.       WinDrawChars("WERR      ", 10, 0, 100);
  79.       fclose(fd);
  80.       unlink(fnp);
  81.       INetLibClose(INRef, inh);
  82.       MemPtrFree(buf);
  83.       SysTaskDelay(200);
  84.       return 3;
  85.     }
  86.  
  87.     StrIToA(buf, len);
  88.     strcat(buf, "    ");
  89.     WinDrawChars(buf, strlen(buf), 0, 124);
  90.   }
  91.  
  92.   MemPtrFree(buf);
  93.   INetLibClose(INRef, inh);
  94.   fclose(fd);
  95.  
  96.   if (!len) {
  97.     unlink(fnp);
  98.     return 1;
  99.   }
  100.  
  101.   return 0;
  102. }
  103.  
  104. FormPtr form = NULL;
  105.  
  106. Boolean handleit(EventPtr event)
  107. {
  108.   FieldPtr tf1;
  109.   unsigned char *tp1;
  110.   unsigned int eid;
  111.  
  112.   switch (event->eType) {
  113.  
  114.   case frmOpenEvent:
  115.     FrmDrawForm(form);
  116.     FrmSetFocus(form, FrmGetObjectIndex(form, 1001));
  117.     return 1;
  118.  
  119.   case ctlSelectEvent:
  120.  
  121.     eid = event->data.ctlEnter.controlID;
  122.     /* process form */
  123.     if (eid == 1005) {
  124.  
  125.       tf1 = FrmGetObjectPtr(form, FrmGetObjectIndex(form, 1001));
  126.       tp1 = FldGetTextPtr(tf1);
  127.  
  128.       GetURL(tp1);
  129.       WinEraseWindow();
  130.       FrmDrawForm(form);
  131.     }
  132.     return 1;
  133.   default:
  134.     return 0;
  135.   }
  136.   return 0;
  137. }
  138.  
  139. DWord PilotMain(Word cmd, Ptr cmdPBP, Word launchFlags)
  140. {
  141.   LocalID lid;
  142.   EventType event;
  143.   Err err;
  144.   Word fid;
  145.   FormPtr ofrm;
  146.   VoidPtr textf;
  147.   VoidHand thand;
  148.  
  149.   if (cmdPBP && strlen(cmdPBP)) {
  150.  
  151.     if (cmd != sysAppLaunchCmdURLParams && cmd != sysAppLaunchCmdNormalLaunch)
  152.       return 0;
  153.  
  154.     // normal launch for palm:, URLP for palmcall:
  155.     ofrm = FrmGetActiveForm(); //palmcall
  156.  
  157.     // display form here
  158.  
  159.     form = FrmInitForm(1000);
  160.     FrmSetActiveForm(form);
  161.     thand = MemHandleNew(strlen(cmdPBP) + 1);
  162.     strcpy(MemHandleLock(thand), cmdPBP);
  163.     MemHandleUnlock(thand);
  164.     textf = FrmGetObjectPtr(form, FrmGetObjectIndex(form, 1001));
  165.     FldSetTextHandle(textf, (Handle) thand);
  166.     FrmDrawForm(form);
  167.  
  168.     err = GetURL(cmdPBP);
  169.  
  170.     FrmEraseForm(form);
  171.     FrmDeleteForm(form);
  172.  
  173.     if (cmd == sysAppLaunchCmdURLParams) {
  174.       if (ofrm)
  175.     FrmSetActiveForm(ofrm);
  176.       return err;               // palmcall, go back..
  177.     }
  178.  
  179.     // Otherwise run boxer - later send cmdPBP to dowloaded file
  180.     lid = DmFindDatabase(0, "Boxer");
  181.     SysUIAppSwitch(0, lid, sysAppLaunchCmdNormalLaunch, NULL);
  182.  
  183.   } else { //Manual mode
  184.  
  185.     if (cmd != sysAppLaunchCmdNormalLaunch)
  186.       return 0;
  187.  
  188.     FrmGotoForm(1000);
  189.  
  190.     do {
  191.       EvtGetEvent(&event, -1);
  192.  
  193.       if (SysHandleEvent(&event))
  194.         continue;
  195.       if (MenuHandleEvent((void *) 0, &event, &err))
  196.         continue;
  197.  
  198.       if (event.eType == frmLoadEvent) {
  199.         fid = event.data.frmLoad.formID;
  200.         form = FrmInitForm(fid);
  201.         FrmSetActiveForm(form);
  202.         FrmSetEventHandler(form, (FormEventHandlerPtr) handleit);
  203.       }
  204.  
  205.       if (form)
  206.         FrmDispatchEvent(&event);
  207.  
  208.     }
  209.     while (event.eType != appStopEvent);
  210.  
  211.   }
  212.  
  213.   return 0;
  214. }
  215.